In typical server network environments, each server may provide multiple resources to be used by tenant users. As many servers may use different but possibly shared resources and provide different levels of access to tenant users, balancing server load and transferring data associated with tenants can be a complex process. For instance, a group of tenants may have access to a group of servers where arbitrary assignment of tenant/server relationships may lead to load imbalance of the servers, which can be detrimental to network/server performance. In typical server network environments, a conventional solution to this problem can be to exhaustively enumerate all combinations of tenants and servers to find a global solution. However, such kind of enumeration can result in a highly complex or relatively unsolvable problem, which can be ineffective. As such, there exists a need to optimize processes associated with tenant placement in server network environments.